"""
    生成器思想
        传统思想：使用return返回容器
        生成器思想：使用yield返回元素
    生成器 generator
    (1)定义：能够动态（循环一次计算一次返回一次）提供数据的可迭代对象
    （2）作用：在循环过程中，按照某种算法推算数据，不必创建容器存储完整的结果，
    从而节省内存空间。数据量越大，优势越明显。以上作用也称之为延迟操作或惰性操作
    通俗的讲就是在需要的时候才计算结果，而不是一次构建出所有结果。

    生成器函数：
        创建：
            def 函数名():
                ...
                yield 数据
                ...
        调用：
            for 变量名 in 函数名():
                语句

    生成器只能使用一次的解决方式：
        使用list接受生成器，再遍历生成器
        data = list(find_all_gt_10())
        for item in data:
            print(item)
"""
# 传统思想
list01 = [32,52,65,76,87,98,9,59]

# 创建函数，在列表中查找大于10的所有数据.
# 传统思想：创建容器存储所有结果
# 缺点：占用内存较大
"""
    def find_all_gt_10():
    result = []
    for item in list01:
        if item > 10:
            result.append(item)
    return result
"""

# 生成器思想：几乎不占内存
def find_all_gt_10():
    for item in list01:
        if item > 10:
            yield item

data = find_all_gt_10()
for item in data:
    print(item)
